// axios二次封装
import axios from "axios";

// 基础请求地址
// baseUrl
let baseUrl = "https://test-shopping-back.bluej.cn/api/";

// console.log(process.env);
// 创建一个新的axios实例
const instance = axios.create({
  baseURL: baseUrl, // baseUrl会在发起请求的时候自动拼接在url前面
  timeout: 20000, // 请求超时时间
  headers:{'isToken':true , "UserToken":false},
});

// 添加请求拦截器
instance.interceptors.request.use(
  function (config) {
    // 在发送请求之前做些什么
    // console.log(config);

    // config当前请求信息的所以配置，我们可以在每次请求前判断token是否存在（自动添加到请求），例如花卉，设置token请求头

    // 是否需要token
    // console.log(config.headers);
    const isToken = config.headers.isToken === false;
    const UserToken = config.headers.UserToken === false;
    // console.log(isToken);

    // 获取token
    let getToken = sessionStorage.getItem("token");
    // 获取用户token
    let userToken = JSON.parse(sessionStorage.getItem("user"))
    // 浏览器存在token并且后台返回isToken为true
    if(getToken && !isToken){
        config.headers["x-token"] = getToken;
    }

    if(userToken && !UserToken){
      config.headers["x-token"] = userToken.token
    }


    return config;
  },
  function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
  }
);

// 添加响应拦截器
axios.interceptors.response.use(
  function (response) {
    // 对响应数据做点什么
    return response;
  },
  function (error) {
    // 对响应错误做点什么

    let {response} = error;
    if(response){
        switch (response.status){
            case 401:
                // 缺少权限（需要验证用户，一般是指未登录状态）
                alert("需要登录")
                break;
            case 403:
                // 服务器理解请求拒绝（token过期）
                break;
            case 409:
                // 错误操作
                alert("给老子好好看api文档！！")
                break;
            default:
                // 服务器问题
        }
    }
    return Promise.reject(error);
  }
);

export default instance;
